package net.comm.pic;

import  java.awt.image.BufferedImage;
import  java.io.File;
import  javax.swing.Icon;
import  javax.swing.ImageIcon;
import  javax.imageio.ImageIO;
import  java.awt.image.AffineTransformOp;
import  java.awt.geom.AffineTransform;
import  java.awt.Image;

public   class  ZoomPicture  {
  public   static   void  main(String arg[])  {
   
   String filePath  =   " g:/图片.jpg " ;   //  图片的位置 
    
    int  height = 50 ;
    int  width = 150 ;
   Icon icon  =   null ;
    try  {
      icon  =  getFixedBoundIcon(filePath,height,width);
      } catch (Exception e)  {
       System.out.println( " exception :  "   +  e);
       } 
   System.out.println( "  ###  "   +  icon);   // 生成新图片的位置； 
  } 
 
     public static Icon getFixedBoundIcon(String filePath,  int  height,  int  width) 
        throws  Exception  {
        double  Ratio = 0.0 ; 
       // 缩放比例  
   File F  =   new  File(filePath); 
        if  ( ! F.isFile())  throw   new  Exception
          (F + "  is not image file error in getFixedBoundIcon! " ); 
       Icon ret  =   new  ImageIcon(filePath);
       BufferedImage Bi  =  ImageIO.read(F); 
        if  ((Bi.getHeight() > height)  ||  (Bi.getWidth() > width))  { 
    if  (Bi.getHeight() > Bi.getWidth())  { 
    Ratio  =  ( new  Integer(height)).doubleValue()  / Bi.getHeight(); 
   } 
     else    {
     Ratio  =  ( new  Integer(width)).doubleValue() / Bi.getWidth(); 
   } 
    int  lastLength  =  filePath.lastIndexOf( " . " );
   String subFilePath  =  filePath.substring( 0 ,lastLength);
   String fileType  =  filePath.substring(lastLength);
   File zoomFile  =   new  File(subFilePath + " _ " + height  + " _ " + width + fileType);
   Image Itemp  =  Bi.getScaledInstance (width,height,Bi.SCALE_SMOOTH);
   AffineTransformOp op  =   new  AffineTransformOp
    (AffineTransform.getScaleInstance(Ratio, Ratio),  null );
   Itemp  =  op.filter(Bi,  null ); 
    try    {
     ImageIO.write((BufferedImage)Itemp,  " jpg " , zoomFile); 
     ret  =   new  ImageIcon(zoomFile.getPath()); 
   } catch  (Exception ex)   {
    System.out.println( " ######## here error :  "   +  ex);
   }  
  } 
    return  ret;
} 
} 

